home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / sys / kowin14s.lzh / corlib / DialogYesNo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-25  |  1.9 KB  |  82 lines

  1.  
  2. #include    <corlib.h>
  3. #include    <HS_wlib.h>
  4.  
  5. #define    DIALOGSIZEH    (40*6)
  6. #define    DIALOGSIZEV    (12*4)
  7. #define    FONT        12
  8. #define    FONT2        16
  9. #define    OFX        8
  10. #define    OFY        8
  11. #define    SWITCHX        (FONT*OFY+8)
  12. #define    SWITCHW        (FONT2*8/2)
  13. #define    SWITCHY        (FONT2+10)
  14.  
  15. static
  16. DialogExec( wp, info )
  17. WindowID    wp;
  18. EventInfo    *info;
  19. {
  20.     if( info->option == EventRedraw ){
  21.         DrawBuf    dbuf[6];
  22.         DrawSetClear( dbuf, ColorGray );
  23.         DrawSetSymbol( dbuf+1, OFX, OFY, HS_WindowGetClientPointer(wp),
  24.                         AttrDefault, FONT );
  25.         DrawSetSymbol( dbuf+2, SWITCHX+FONT2, SWITCHY,
  26.                         "Yes      No",
  27.                         AttrDefault, FONT2 );
  28.         DrawSetLine( dbuf+3, SWITCHX, SWITCHY, SWITCHX+SWITCHW-1,
  29.                 SWITCHY+FONT2, ShadowUp, OptionShadow );
  30.         DrawSetLine( dbuf+4, SWITCHX+SWITCHW, SWITCHY,
  31.                 SWITCHX+SWITCHW*2-1, SWITCHY+FONT2,
  32.                         ShadowUp, OptionShadow );
  33.         DrawSetLine( dbuf+5, 4, 4, DIALOGSIZEH-4, DIALOGSIZEV-4,
  34.                         ShadowDown, OptionShadow );
  35.         WindowDraw( wp, dbuf, 6 );
  36.     }
  37.     return    TRUE;
  38. }
  39.  
  40. DialogYesNo( msg, info )
  41. char        *msg;
  42. EventInfo    *info;
  43. {
  44.     int        x, y;
  45.     unsigned short    *sp;
  46.     WindowID    wp;
  47.     WindowGetRootScroll( &x, &y );
  48.     sp= WindowGetScreenTable( WindowGetScreenMode() );
  49.     x+= (sp[0]-DIALOGSIZEH)/2;
  50.     y+= (sp[1]-DIALOGSIZEV)/2;
  51.     wp= WindowSimpleOpen( x, y, DIALOGSIZEH, DIALOGSIZEV,
  52.                             NULL, DialogExec );
  53.     HS_WindowGetClientPointer( wp )= msg;
  54.     WindowRedraw( wp );
  55.     for(;;){
  56.         WindowID    cwp;
  57.         if( WindowGetEventInfo( info ) ){
  58.             if( info->KeyCode == 'y' ){
  59.                 WindowClose( wp );
  60.                 return    TRUE;
  61.             }else if( info->KeyCode == 'n' ){
  62.                 WindowClose( wp );
  63.                 return    FALSE;
  64.             }
  65.             cwp= WindowGetChild( WindowRootID, info );
  66.             if( cwp == wp ){
  67.                 if( info->LeftON &&
  68.                         info->y >=SWITCHY &&
  69.                         info->y < SWITCHY+FONT2 &&
  70.                         info->x >=SWITCHX &&
  71.                         info->x < SWITCHX+SWITCHW*2 ){
  72.                     WindowClose( wp );
  73.                     if( info->x < SWITCHX+SWITCHW )
  74.                         return    TRUE;
  75.                     return    FALSE;
  76.                 }
  77.             }
  78.         }
  79.     }
  80. }
  81.  
  82.